/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.faesa.acervo.view.mbeans;

import br.faesa.acervo.business.ejb.CadastroBasicoSessionBeanLocal;
import br.faesa.acervo.entity.Usuario;
import java.io.Serializable;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author aluno.faesa
 */
@ManagedBean
@ViewScoped
public class UsuarioCadastroManagedBean implements Serializable {

    private long id;
    private String login;
    private String nome;
    private String senha;
    private String confSenha;
    private Usuario usuario;

    @EJB
    private CadastroBasicoSessionBeanLocal ejb;

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getConfSenha() {
        return confSenha;
    }

    public void setConfSenha(String confSenha) {
        this.confSenha = confSenha;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public UsuarioCadastroManagedBean() {
    }

    private void configureSelectedId() {

        final String SELECTED_ID = "id";

        Map<String, String> paramMap = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

        if (paramMap.containsKey(SELECTED_ID)) {
            this.setId(Long.parseLong(paramMap.get(SELECTED_ID)));
        }
    }

    @PostConstruct
    public void init() {

        this.configureSelectedId();

        if (this.getId() > 0) {
            this.usuario = ejb.obterUsuario(this.getId());

            if (this.usuario != null) {
                this.setNome(usuario.getNome());
                this.setLogin(usuario.getLogin());
                this.setSenha(usuario.getSenha());
                this.setConfSenha(usuario.getSenha());
            }
        }
    }

    public String onBotaoOKClick() {

        if (getSenha().equals(getConfSenha())) {
            configureSelectedId();
            usuario = new Usuario();
            usuario.setNome(nome);
            usuario.setLogin(login);
            usuario.setSenha(senha);
            usuario.setId(id);
            usuario = ejb.salvarUsuario(usuario);
            addMessage("Operação comcluida com sucesso!!!", FacesMessage.SEVERITY_INFO);
            return "/usuarioConsultaForm.xhtml";
        } else {
            addMessage("A senha não confere com a confirmação!!!", FacesMessage.SEVERITY_ERROR);
        }

        return null;
    }

    public void addMessage(String summary, FacesMessage.Severity severity) {
        FacesMessage message = new FacesMessage(severity, summary, null);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

}
